package cn.dubito.sshl.idx;

import java.util.List;

import org.apache.lucene.document.Document;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.highlight.Highlighter;

import cn.dubito.sshl.common.PageModel;


/**
 * 操作索引库的基础DAO接口
 */
public interface LuceneDao {
	/** 定义基础的路径 */
	String IDX_BASE_DIR = "/Users/liliang/Downloads/index_db";
	/**
	 * 添加文档
	 * @param document文档
	 */
	void save(Document document);
	/**
	 * 修改文档
	 * @param field
	 * @param value
	 * @param document
	 */
	void update(String field, String value, Document document);
	/**
	 * 删除文档
	 * @param field
	 * @param value
	 */
	void delete(String field, String value);
	/**
	 * 删除全部文档
	 */
	void deleteAll();
	/**
	 * 检索文档
	 * @param queryStr
	 * @param num
	 * @return
	 */
	List<Document> find(String queryStr, int num);
	/**
	 * 检索文档
	 * @param queryStr
	 * @param num
	 * @return
	 */
	List<Document> find(Query query, int num);
	/**
	 * 分页检索文档
	 * @param queryStr
	 * @param pageModel
	 * @return
	 */
	List<Document> findByPage(String queryStr, PageModel pageModel);
	/**
	 * 分页检索文档
	 * @param query
	 * @param pageModel
	 * @return
	 */
	List<Document> findByPage(Query query, PageModel pageModel);
	/**
	 * 获取高亮对象
	 * @param queryStr
	 * @param num
	 * @return
	 */
	Highlighter getHighlighter(String queryStr, int num);
}
